TOP

Funciones SQL NULL

Funciones SQL IFNULL(), ISNULL(), COALESCE() y NVL()


Veamos la siguiente tabla "Products" ("Productos"):

ProductIDProductNameSupplierIDCategoryIDUnitPrice
1Chais1110 boxes x 20 bags18.00
2Chang1124 - 12 oz bottles19.00
3Aniseed Syrup1212 - 550 ml bottles10.00
4Chef Anton's Cajun Seasoning2248 - 6 oz jars22.00
5Chef Anton's Gumbo Mix2236 boxes21.35

Suponga que la columna "UnitsOnOrder" es opcional y puede contener el valor NULL.

Considere la siguiente instrucción SELECT:

SELECT ProductName, UnitPrice * (UnitsInStock + UnitsOnOrder)
FROM Products

En el ejemplo anterior, si alguno de los valores de "UnitsOnOrder" es igual a NULL, el resultado será NULL.

Decisión

MySQL

La función MySQL IFNULL() le permite devolver un valor alternativo si la expresión es igual a NULL:

SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
FROM Products

o podemos usar la función COALESCE(), por ejemplo:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products

Servidor SQL

La función SQL Server ISNULL() le permite devolver un valor alternativo si la expresión tiene el valor NULL:

SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))
FROM Products

o podemos usar la función COALESCE(), por ejemplo:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products

MS Access

La función MS Access IsNull() devuelve TRUE (-1) si la expresión es nula, de lo contrario FALSE (0):

SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder))
FROM Products

Oracle

La función Oracle NVL() logra el mismo resultado:

SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))
FROM Products

o podemos usar la función COALESCE(), por ejemplo:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products